package com.guodi.common.utils;

import org.apache.commons.lang3.StringUtils;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.util.Base64;
import java.util.Objects;

/**
 * @描述: base64相关工具类
 * @作者: 余家鑫
 * @日期: 2021/6/23 上午11:40
 */
public class Base64Util {

    /**
     * @描述: 获取base64图片中心点的rgb
     * @入参:
     * @出参:
     * @作者: 余家鑫
     * @日期: 2021/6/23 上午11:43
     */
    public static int[] getBase64CenterRgb(String base64){
        if(StringUtils.isBlank(base64)){
            return new int[]{};
        }
        BufferedImage bi = base642BufferedImage(base64);
        if(Objects.isNull(bi)){
            return new int[]{};
        }
        int width=bi.getWidth();
        int height=bi.getHeight();
        int minx=bi.getMinX();
        int miny=bi.getMinY();
        int centerX = minx + width/2;
        int centerY = miny + height/2;
        int pixel=bi.getRGB(centerX,centerY);
        int[] rgb = new int[3];
        rgb[0] = (pixel & 0xff0000) >> 16;
        rgb[1] = (pixel & 0xff00) >> 8;
        rgb[2] = (pixel & 0xff);

        return rgb;
    }

    /**
     * @描述: base64数据转BufferedImage 注意, 这个base64开头不能包含 data:image/png;base64,
     * @入参:
     * @出参:
     * @作者: 余家鑫
     * @日期: 2021/6/23 上午11:41
     */
    public static BufferedImage base642BufferedImage(String base64) {
        Base64.Decoder decoder = Base64.getDecoder();
        try {
            byte[] bytes1 = decoder.decode(base64);
            ByteArrayInputStream bais = new ByteArrayInputStream(bytes1);
            return ImageIO.read(bais);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}
